﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       Shpm.App.Input.Dao.PersonEmployeeDao
 * 类型：       数据访问层
 * 功能说明：   职位信息数据对象
 * 作者：       黄鑫
 * 创建日期：   2007/11/06
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
*/

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using Shpm.System.Db;
using Shpm.App.Commons.Db.Beans.Master;
using Shpm.App.Commons.Db.Beans.Inp;
using Shpm.App.Input.Bean;
using Shpm.App.Master.Bean;

namespace Shpm.App.Input.Dao
{
    public class PersonEmployeeDao : ShpmBaseDao
    {
        public const string GET_ID = "PersonEmpolyee.GetId";
        public const string EMP_IN = "PersonEmpolyee.EmpIn";
        public const string PWD_IN = "PersonEmpolyee.PwdIn";
        public const string PWD_DEL = "PersonEmpolyee.PwdDel";
        public const string PERMISSION_IN = "PersonEmpolyee.PermissionIn";
        public const string PERMISSION_DEL = "PersonEmpolyee.PermissionDel";
        public const string EMP_UPD = "PersonEmpolyee.UpdEmp";
        public const string EMP_WELFARE = "PersonEmpolyee.UpdEmpWelfare";

        // 从数据字典中取得画面列表项内容
        public const string FIND_BY_CATALOG = "CommonDictionary.FindByCatalog";

        //用户信息列表
        public const string LIST_EMPLOYEE = "PersonEmployee.LstEmployee1";

        //用户信息
        public const string FIND = "PersonEmployee.LstEmployee";

        //更新在职状态
        public const string UPD_STATUS = "PersonEmployee.UpdStatus";

        //检查职位信息
        public const string CHK_EMPLOYEE_JOB = "PersonEmployee.ChkEmployeeJob";

        //插入职位信息
        public const string INS_EMPLOYEE_JOB = "PersonEmployee.InsEmployeeJob";

        //更新职位信息
        public const string UPD_EMPLOYEE_JOB = "PersonEmployee.UpdEmployeeJob";

        public PersonEmployeeDao()
        {

        }

        /*
         *名称： FindByCatalog
         *功能： 取得数据字典列表对象。
         *参数： paramBean - 检索参数
         *返回： 数据字典列表 
         *说明： 从数据字典中取得画面列表项内容
        */
        public IList FindByCatalog(CommonDictionaryBean paramBean)
        {
            return base.QueryForList(FIND_BY_CATALOG, paramBean);
        }

        /*
         *名称： ListResult
         *功能： 取得职位信息列表对象。
         *参数： paramBean - 检索参数
         *返回： 职位信息列表 
         *说明： 从职位信息中取得画面列表项内容
        */
        public IList ListEmployee(PersonEmployeeBean paramBean)
        {
            return base.QueryForList(LIST_EMPLOYEE, paramBean);
        }

        /*
         *名称： Find
         *功能： 取得职位信息对象。
         *参数： paramBean - 检索参数
         *返回： 职位信息列表 
         *说明： 从职位信息中取得画面项内容
        */
        public PersonEmployeeBean Find(PersonEmployeeBean paramBean)
        {
            return (PersonEmployeeBean)base.QueryForObject(FIND, paramBean);
        }

        /*
         *名称： CheckEmployeeJob
         *功能： 取得在职状态列表对象。
         *参数： paramBean - 检索参数
         *返回： 职位信息列表 
         *说明： 从职位信息中取得画面列表项内容
        */
        public IList CheckEmployeeJob(PersonEmployeeBean paramBean)
        {
            return base.QueryForList(CHK_EMPLOYEE_JOB, paramBean);
        }

        /*
         *名称： InsertEmployeeJob
         *功能： 取得在职状态列表对象。
         *参数： paramBean - 检索参数
         *返回： 职位信息列表 
         *说明： 从职位信息中取得画面列表项内容
        */
        public object InsertEmployeeJob(PersonEmployeeBean paramBean)
        {
            try
            {
                base.BeginTransaction();
                object result = base.Insert(INS_EMPLOYEE_JOB, paramBean);
                base.Delete(PERMISSION_DEL, paramBean);
                if (paramBean.JobId >= 30 && paramBean.JobId <= 32)
                {
                    paramBean.GroupId = "0";
                }
                if (paramBean.JobId == 29 || paramBean.JobId == 34)
                {
                    paramBean.GroupId = "1";
                }
                if (paramBean.JobId == 30 )
                {
                    paramBean.GroupId = "7";
                }
                base.Insert(PERMISSION_IN, paramBean);
                base.CommitTransaction();
                return result;
            }
            catch (Exception e)
            {
                base.RollBackTransaction();
                throw e;
            }   
        }

        /*
         *名称： UpdateEmployeeJob
         *功能： 取得在职状态列表对象。
         *参数： paramBean - 检索参数
         *返回： 职位信息列表 
         *说明： 从职位信息中取得画面列表项内容
        */
        public object UpdateEmployeeJob(PersonEmployeeBean paramBean)
        {
            try
            {
                base.BeginTransaction();
                object result = base.Update(UPD_EMPLOYEE_JOB, paramBean);
                base.Delete(PERMISSION_DEL, paramBean);
                if (paramBean.JobId >= 30 && paramBean.JobId <=32)
                {
                    paramBean.GroupId = "0";
                }
                if (paramBean.JobId == 29 || paramBean.JobId == 34)
                {
                    paramBean.GroupId = "1";
                }
                if (paramBean.JobId ==30)
                {
                    paramBean.GroupId = "7";
                }

                base.Insert(PERMISSION_IN, paramBean);
                base.CommitTransaction();
                return result;
            }
            catch (Exception e)
            {
                base.RollBackTransaction();
                throw e;
            }   
        }

        /*
         *名称： UpdStatus
         *功能： 更新在职状态对象。
         *参数： paramBean - 更新对象
         *返回： 更新记录数
         *说明： 更新在职状态 UpdStatus 
        */
        public int UpdStatus(PersonEmployeeBean paramBean)
        {
            return base.Update(UPD_STATUS, paramBean);
        }

        public PersonEmployeeBean GetEnployeeId(PersonEmployeeBean paramBean)
        {
            return (PersonEmployeeBean)base.QueryForObject(GET_ID, paramBean);
        }

        public object InsertEmployeeId(PersonEmployeeBean bean)
        {
            try
            {
                base.BeginTransaction();
                base.Delete(PWD_DEL, bean);
                base.Insert(PWD_IN, bean);
                object result = base.Insert(EMP_IN, bean);
                base.CommitTransaction();
                return result;
            }
            catch (Exception e)
            {
                base.RollBackTransaction();
                throw e;
            }            
        }
        public int UpdEmployee(PersonEmployeeBean bean)
        {
            return base.Update(EMP_UPD, bean);
        }

        public int UpdWelfare(PersonEmployeeBean bean)
        {
            return base.Update(EMP_WELFARE, bean);
        }

    }
}